home *** CD-ROM | disk | FTP | other *** search
- // Copyright 2013 The Chromium Authors. All rights reserved.
- // Use of this source code is governed by a BSD-style license that can be
- // found in the LICENSE file.
-
- //
- // <window-controls> shadow element implementation.
- //
-
- var chrome = requireNative('chrome').GetChrome();
- var forEach = require('utils').forEach;
- var addTagWatcher = require('tagWatcher').addTagWatcher;
- var appWindow = require('app.window');
- var getHtmlTemplate =
- requireNative('app_window_natives').GetWindowControlsHtmlTemplate;
-
- /**
- * @constructor
- */
- function WindowControls(node) {
- this.node_ = node;
- this.shadowRoot_ = this.createShadowRoot_(node);
- this.setupWindowControls_();
- }
-
- /**
- * @private
- */
- WindowControls.prototype.template_element = null;
-
- /**
- * @private
- */
- WindowControls.prototype.createShadowRoot_ = function(node) {
- // Initialize |template| from HTML template resource and cache result.
- var template = WindowControls.prototype.template_element;
- if (!template) {
- var element = document.createElement('div');
- element.innerHTML = getHtmlTemplate();
- WindowControls.prototype.template_element = element.firstChild;
- template = WindowControls.prototype.template_element;
- }
- // Create shadow root element with template clone as first child.
- var shadowRoot = node.createShadowRoot();
- shadowRoot.appendChild(template.content.cloneNode(true));
- return shadowRoot;
- }
-
- /**
- * @private
- */
- WindowControls.prototype.setupWindowControls_ = function() {
- var self = this;
- this.shadowRoot_.querySelector("#close-control").addEventListener('click',
- function(e) {
- chrome.app.window.current().close();
- });
-
- this.shadowRoot_.querySelector("#maximize-control").addEventListener('click',
- function(e) {
- self.maxRestore_();
- });
- }
-
- /**
- * @private
- * Restore or maximize depending on current state
- */
- WindowControls.prototype.maxRestore_ = function() {
- if (chrome.app.window.current().isMaximized()) {
- chrome.app.window.current().restore();
- } else {
- chrome.app.window.current().maximize();
- }
- }
-
- addTagWatcher('WINDOW-CONTROLS', function(addedNode) {
- new WindowControls(addedNode);
- });
-